gtkwindow: Free pointer foci on dispose
authorCarlos Garnacho <carlosg@gnome.org>
Wed, 19 Jul 2017 16:13:47 +0000 (18:13 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Wed, 19 Jul 2017 16:16:18 +0000 (18:16 +0200)
That means the whole hierarchy is getting destroyed, leaving those
behind incurs not only in a leak, but also on weak refs (and unintended
repick) to happen in the wrong moment.

gtk/gtkwindow.c

index d680906e49b326ed2690cbd3ee60afca89640ef4..b476321fefe7192cf3ea27c50953c91cf6d859de 100644 (file)
@@ -3237,6 +3237,9 @@ gtk_window_dispose (GObject *object)
   GtkWindow *window = GTK_WINDOW (object);
   GtkWindowPrivate *priv = window->priv;
 
+  g_list_free_full (priv->foci, (GDestroyNotify) gtk_pointer_focus_unref);
+  priv->foci = NULL;
+
   gtk_window_set_focus (window, NULL);
   gtk_window_set_default (window, NULL);
   remove_attach_widget (window);